home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <graphics.h>
-
- extern char _BGI_auto;
-
- #define MK_FP( seg,ofs )( (void _seg * )( seg ) +( void near * )( ofs ))
-
- void setenv( char *what, char *is )
- {
- unsigned psp;
- char far *env;
- char *t;
- asm {
- mov ah, 62h // get psp
- int 21h
- }
- psp = _BX;
- env = (char far *) MK_FP( *( (unsigned far *) MK_FP( psp, 0x2c )), 0 );
-
- while( *env )
- {
- for( t = what; *t; t++ )
- if( *t != *env++ )
- goto failed;
- if( *env++ == '=')
- {
- while( (*env++ = *is++) != 0 );
- *env++ = 0;
- return;
- }
- failed:
- while( *env )
- env++;
- env++;
- }
- }
-
- void far _Cdecl restorecrtmode(void) {}
-
- void process( int driver, int mode, char *fname, char *print, int from, int to )
- {
- int i, font;
- char avail[256], s[2] = "?";
-
- fprintf( stderr, "(%s ", fname );
-
- font = installuserfont( fname );
-
- initgraph( &driver, &mode, "../bin");
- settextstyle( font, HORIZ_DIR, 5 );
- settextjustify( LEFT_TEXT, BOTTOM_TEXT );
-
- for( i = from; i <= to; i++ )
- {
- *s = i;
- avail[i] = (textwidth( s ) > 0);
- }
- closegraph();
-
- for( i = from; i <= to; i++ )
- if( avail[i] )
- {
- fprintf( stderr, "[%d] ", i );
- {
- char s[20];
- sprintf( s, print, i );
- setenv( "PS$", s );
- }
- initgraph( &driver, &mode, "../bin");
- settextstyle( font, HORIZ_DIR, 5 );
- settextjustify( LEFT_TEXT, BOTTOM_TEXT );
- setviewport( 0, 0, 100, 100, 0 ); // no clipping
- // rectangle( 1, 1, 98, 98 );
- *s = i;
- outtextxy( 1, 70, s );
- // fprintf( stderr, "%d,%d", textheight(s), textwidth(s) );
- closegraph();
- }
- fprintf( stderr, ") ");
- }
-
- int main( int argc, char *argv[] )
- {
- char s[256];
- int i, driver, mode;
-
- if( !getenv("PS$") )
- {
- putenv("PS$=dummy");
- system( argv[0] );
- return 0;
- }
- _BGI_auto = 0xa5;
- driver = installuserdriver( "PS", 0 );
- mode = 6; // encapsulated 100x100
- //driver = 1;
- //mode = 1;
- process( driver, mode, "sy20", "*s%d.eps", 1, 255 );
- process( driver, mode, "sy10", "*t%d.eps", 1, 255 );
- process( driver, mode, "gr2b", "*g%d.eps", 1, 255 );
- process( driver, mode, "rm2l", "*l%d.eps", 1, 6 );
-
- return 0;
- }